package com.zzyl.service;

import com.zzyl.base.PageBean;
import com.zzyl.dto.DeviceDto;
import com.zzyl.dto.DevicePageQueryDto;
import com.zzyl.dto.QueryDeviceDataDto;
import com.zzyl.vo.*;

import java.util.List;

public interface DeviceService {

    /**
     * 同步产品列表
     *
     * @author 16203
     */
    void syncProductList();

    /**
     * 所有产品
     *
     * @return {@code List<ProductVo> }
     * @author 16203
     */
    List<ProductVo> allProduct();

    /**
     * 寄存器装置
     *
     * @param deviceDto 设备dto
     * @author 16203
     */
    void registerDevice(DeviceDto deviceDto);

    /**
     * 页面查询设备
     *
     * @param dto
     * @return {@code PageBean<DeviceVo> }
     * @author 16203
     */
    PageBean<DeviceVo> PagequeryDevice(DevicePageQueryDto dto);


    /**
     * 查询设备详细信息
     *
     * @param dto
     * @author 16203
     */
    DeviceVo QueryDeviceDetail(DeviceDto dto);

    /**
     * 查询设备属性状态
     *
     * @param dto 到
     * @return {@code DevicePropertyStatusVo }
     * @author 16203
     */
    DevicePropertyStatusVo QueryDevicePropertyStatus(DeviceDto dto);

    /**
     * 更新设备
     *
     * @param dto 到
     * @author 16203
     */
    void UpdateDevice(DeviceDto dto);

    /**
     * 删除设备
     *
     * @param dto 到
     * @author 16203
     */
    void deleteDevice(DeviceDto dto);


    /**
     * 按周查询设备数据列表
     *
     * @param dto 到
     * @return {@code List<DeviceDataGraphVo> }
     * @author 16203
     */
    List<DeviceDataGraphVo> queryDeviceDataListByWeek(QueryDeviceDataDto dto);

    /**
     * 按天查询设备数据列表
     *
     * @param dto 到
     * @return {@code List<DeviceDataGraphVo> }
     * @author 16203
     */
    List<DeviceDataGraphVo> queryDeviceDataListByDay(QueryDeviceDataDto dto);

    /**
     * 查询对象模型已发布
     *
     * @param dto 到
     * @return {@code String }
     * @author 16203
     */
    QueryThingModelVo QueryThingModelPublished(DeviceDto dto);
}
